package com.item1024.utils;

import com.aliyun.mns.client.CloudAccount;
import com.aliyun.mns.client.CloudTopic;
import com.aliyun.mns.client.MNSClient;
import com.aliyun.mns.common.ServiceException;
import com.aliyun.mns.model.BatchSmsAttributes;
import com.aliyun.mns.model.MessageAttributes;
import com.aliyun.mns.model.RawTopicMessage;
import com.aliyun.mns.model.TopicMessage;

import javax.annotation.Resource;

/**
 * @author 阳十三
 * @email wdful165177@gmail.com
 * @blog http://www.item1024.com
 */
public class SendSMS {
    /**
     *
     * @param request httpServletRequest
     * @param mobilePhone  要发送的手机号码
     * @param type 要发送的短信模版
     * @param smsCode  要发送的内容  请按照数据库表的标准 code来制定传入参数
     * @return  Boolean
     */

//    @Resource
//    private AliSmsService aliSmsService;
//
//    public Boolean sendSms(String mobilePhone,String yourSMSTemplateCode,String smsCode){
//        /**
//         * Step 1. 获取主题引用
//         */
//        /*********需要准备的参数*/
//        String yourAccessId = "LTAIhu5Lc3GZFDAH";
//        String yourAccessKeySecret = "LVyMdUKGBCW0qYgb1RPiXfnkqMp89K";
//        String yourMNSEndpoint = "http://1612739436209406.mns.cn-hangzhou.aliyuncs.com";
//        String yourSignName = "奥农丰汇";
//        String yourTopic = "sms.topic-cn-hangzhou";
//        CloudAccount account = new CloudAccount(yourAccessId, yourAccessKeySecret, yourMNSEndpoint);
//        MNSClient client = account.getMNSClient();
//        CloudTopic topic = client.getTopicRef(yourTopic);
//        /**
//         * Step 2. 设置SMS消息体（必须）
//         *
//         * 注：目前暂时不支持消息内容为空，需要指定消息内容，不为空即可。
//         */
//        RawTopicMessage msg = new RawTopicMessage();
//        msg.setMessageBody("sms-message");
//        /**
//         * Step 3. 生成SMS消息属性
//         */
//        MessageAttributes messageAttributes = new MessageAttributes();
//        BatchSmsAttributes batchSmsAttributes = new BatchSmsAttributes();
//        // 3.1 设置发送短信的签名（SMSSignName）
//        batchSmsAttributes.setFreeSignName(yourSignName);
//        // 3.2 设置发送短信使用的模板（SMSTempateCode）
//        batchSmsAttributes.setTemplateCode(yourSMSTemplateCode);
//        // 3.3 设置发送短信所使用的模板中参数对应的值（在短信模板中定义的，没有可以不用设置）
//        BatchSmsAttributes.SmsReceiverParams smsReceiverParams = new BatchSmsAttributes.SmsReceiverParams();
//        //这里进行的判断  华丽的分隔符-----------------=========================--------------------
////        if(smsCode.equals("165177")){
////            smsCode = String.valueOf(((Math.random()*9+1)*100000));
////            request.getSession().setAttribute("Smscode",smsCode);
////        }
//       //------------------------===========================--------------------------------
//        smsReceiverParams.setParam("code",smsCode);
//        // 3.4 增加接收短信的号码
//        String phone1 = mobilePhone.trim();
//        batchSmsAttributes.addSmsReceiver(phone1, smsReceiverParams);
////
//        messageAttributes.setBatchSmsAttributes(batchSmsAttributes);
//        Boolean flag = false;
//        try {
//            /**
//             * Step 4. 发布SMS消息
//             */
//            TopicMessage ret = topic.publishMessage(msg, messageAttributes);
//            System.out.println("MessageId: " + ret.getMessageId());
//            System.out.println("MessageMD5: " + ret.getMessageBodyMD5());
//            flag = true;
//        } catch (ServiceException se) {
//            System.out.println(se.getErrorCode() + se.getRequestId());
//            System.out.println(se.getMessage());
//            se.printStackTrace();
//        } catch (Exception e) {
//            e.printStackTrace();
//        } finally {
//            client.close();
//        }
//        return flag;
//    }
}
